# -*- coding: utf-8 -*-
# @Author: QX
# @File: CasePlugin.py
"""
    这里的方法名都不能改名字，因为用的是钩子函数
    是 pytest 自带的，会在执行用例之前，自己去进行调用的。
"""
from parse.CaceParser import case_parser


class CasesPlugin:
    #生成pytest的参数
    def pytest_addoption(self, parser):
        parser.addoption("--type", action='store', default='yaml',help="测试用例的类型")
        parser.addoption("--cases", action='store', default='./examples', help="测试用例的目录")

    #调用测试用例,参数化
    def pytest_generate_tests(self, metafunc):
        case_type = metafunc.config.getoption('type')
        case_dir = metafunc.config.getoption('cases')
        #调用测试用例的解析器
        data = case_parser(case_type, case_dir)
        # 进行测试用例进行参数化，自动交给runner去进行执行
        if "caseinfo"  in metafunc.fixturenames:
            metafunc.parametrize("caseinfo", data['case_infos'], ids=data['case_names'])

    #转码
    def pytest_collection_modifyitems(self, items):
        for item in items:
            item.name = item.name.encode("utf-8").decode("unicode_escape")
            item._nodeid = item.nodeid.encode("utf-8").decode("unicode_escape")



